 
/* 
 * Copyright (C) Ignacio Lucas
 */
 
/*
 *  jobs_controller, hecho por Ignacio Lucas
 *
 *  Dispatcher de jobs listos para ser ejecutados. Dichos jobs pueden estar relacionados con jobs nuevos o jobs
 *  que, luego de haberse bloqueado, vuelven a estar listos para ser ejecutados.
 *  Recibe los eventos generados por el modulo io_handler y actua en consecuencia:
 *	- acepta conexiones (si el evento indica que se recibio una nueva conexion), creando una nueva tarea asociada.
 *	- recibe eventos sobre notificaciones de operaciones de E/S listas para ejecutarse.
 *	- encola nuevas tareas o tareas previamente suspendidas en una cola de tareas, de la que el grupo de server_worker consume
 *    para procesar.
 *	
 *
 *  Ignacio Lucas <ignacio.lucas@gmail.com>
 */
#if !defined(JOBS_CONTROLLER_H)
#define JOBS_CONTROLLER_H

typedef struct s_jobs_controller *jobs_controller_t;

//#include "job_event.h"
#include "server_worker.h"

// devuelve una funcion contenida dentro de la libreria de la aplicacion que ejecuta mashup-server.
int jobs_controller_get_application_function(void **fn, const char *fn_name);

// inicializacion del jobs_controller usando la configuracion pasada por parametro.
int jobs_controller_init();

// registrar un evento de interes desde la aplicacion.
int jobs_controller_register_event_interest(job_event_t event);

// lanzar un job nuevo desde un job en ejecucion
int jobs_controller_launch_child(server_worker_job_t job);

// destruir jobs_controller.
int jobs_controller_destroy();

#endif
